Surfmodl 3.00C Release Notes. These notes discuss the differences between SURFMODL 2.00c and 3.00C. NEW FEATURES: Version 3.00C has the following changes: -- Support for the full palette of the VGA and Super VGA adapters, and several resolution modes. Many thanks go to Jordan Hargrave, who wrote the SVGA256 support now used. (His contribution is shareware, however, so users are encouraged to register with him - see SVGA256.REG for details.) -- Fully dynamic memory allocation, so SURFMODL only uses as much memory as it needs. This also means there is no longer a need for two versions of the program; everyone can use the big memory version, regardless of how much memory their system has. -- Automated installation utility (SURFINST). -- Global configuration file (SURFMODL.CFG), created by SURFINST. -- A new symbolic command format in the .INI files, which makes them easy to manually modify. -- Interactive file selector, so you don't have to type in file names anymore. -- You can now save and play back screens in any graphics mode (previously this did not work with screens that required more than 64 KBytes of memory to store). -- The PLAYBACK utility now supports extended memory (using XMS, alias HIMEM.SYS), so it is possible to do very long animations. (For some of the high resolution Super VGA modes, you MUST have extended memory because there isn't enough conventional memory to load even a single screen.) A job well done by Yuval Tal, wrote the XMS unit I used to implement this. -- New looping options in PLAYBACK. -- Support for screen dumps to a color printer (using the shareware utility Colour Snap). -- Support for the Amiga IFF format for saving SURFMODL images. -- Option to show surface borders. -- Support for an optional environment variable, SURFDIR, where SURFMODL will look for all data files (default is the current directory). -- Performance statistics window. -- Saved screens are sequentially numbered, to avoid overwriting them. -- Several miscellaneous bugs tracked down and SQUASHED! -- Third optional command-line parameter, to allow automated scripts that save the screen to disk. COMPATIBILITY: Version 3.00C is written in Turbo Pascal 6.0. It may still compile under versions 5.0 and 5.5, but definitely nothing earlier. PLAYBACK requires version 6.0 because of the XMS unit. Version 3.00C reads all the old data files, but not the old .INI files. You must use the utility INICVT to convert your old-format .INI files into the new format. The new format has symbolic commands, so it is very easy to read and modify. Whereas I used to name all of the SURFMODL data files with no file name extension, SURFMODL now requires that you use the extension of .SRF if you want to use the interactive file selector. I recommend you use this extension for all your new data files, and rename your old data files to this extension. KNOWN BUGS: Much as I hate to admit it, there are still a few bugs in SURFMODL: -- Shadowing still doesn't work quite right (it never did). -- If PLAYBACK encounters an error allocating memory, on some systems it leaves you in a graphics mode and you can not read the error message. You have to blindly type "MODE CO80" to restore your screen to normal, but you may not know why PLAYBACK kicked you out. If you have extended memory available, and HIMEM.SYS is loaded, a memory allocation can fail for two reasons: (1) Not enough memory left; and (2) Ran out of handles. This is why you will now get an extensive memory usage report at the end of each PLAYBACK run if you use extended memory. If you have the above problem, I recommend you reduce the number of files that are used in your animation until you get something to work. Then you should have a readable memory report when the animation finishes, and you will be able to tell whether you are closer to running out of memory or out of handles. Unfortunately, the copy of HIMEM.SYS that I have does not allow you to increase the number of handles. If someone else knows how to, please let me know. -- The IBM 8514 has been removed from the system selection menu, because the new VGA driver (SVGA256.BGI and VGA256.BGI) use the same system number. I don't know anyone who has an 8514, but I would like to hear comments: Can you use the VGA drivers? -- IFF files generated by SURFIFF are not readable by all IFF file viewers (see SURFIFF.DOC for details). -- PREPROC's EXTRUDE function mis-orders surfaces (not always following the counter-clockwise rule), so you must use Nsides=2 if you use this feature. FUTURE DIRECTIONS: -- I am currently involved in a joint programming effort with Daniel Hudgins, the author of DANCAD3D (a popular shareware CAD program). We are trying to create an automated conversion utility to create SURFMODL data files from DANCAD3D. If we are successful, this will make a very simple way to create new SURFMODL data files. -- GIF support for file saving. I have actually already pretty much got this working, but the files are not displayed properly by all GIF viewers. I don't want to release this unless it's working 100%. -- An option to over-ride SURFMODL's autoscaling of images. I have been planning to do this for quite some time, but just haven't found the time. Notes for Programmers: ~~~~~~~~~~~~~~~~~~~~~ The program comes as a number of include files, several units, and the main program: *.BGI - Borland Graphics Interface device drivers. COMPILE.BAT - Uses the Turbo Pascal line mode to compile the program. BGI2OBJ.BAT - Converts .BGI files into .OBJ files suitable for linking into the final SURFMODL.EXE file. *.INC - Include files for the program and units SURFMODL.PAS - The SURFMODL program ANSICRT.PAS - A unit to emulate the CRT unit using ANSI.SYS escape sequences on machines which are not IBM compatible. It's emulation is incomplete, and some CRT unit functions are still used, especially WINDOW, KEYPRESSED, and READKEY. You may have to modify this unit further to work on your system. Normally the Borland CRT unit is used and this unit is ignored. SURFBGI.PAS - A unit to provide Borland Graphics Interface support for VAXmate (and eventually other) computers. It uses the Borland GRAPH unit, but also supplies equivalent BGI routines for devices not supported by the GRAPH unit. It does not emulate the entire BGI system, just the parts which SURFMODL needs. It is supplied in this version to demonstrate how to integrate other graphics systems, but you should not need to use it. SURFGRAF.PAS - Surfmodl Graphics primitives, implemented in BGI graphics. If a non BGI graphics device is being used (like the VAXmate) then this unit uses the SURFBGI unit. Otherwise SURFBGI is never used. PLAYBACK.PAS - A program to play back images saved with surfmodl. SURFINST.PAS - Automated installation utility. PLAYPAL.PAS - A program to allow you to experiment with the full palette of the VGA, to see what your SURFMODL files will look like before you run them. See also the file FILES.IDX for a more complete list of files. Customizing the Program: ~~~~~~~~~~~~~~~~~~~~~~~ The file DEFINES.INC is used to customize your program. It contains all the definitions for the built in Turbo Pascal pre-processor. This file is included at the beginning of all the programs and units, so a change in this file forces the entire system to be re-compiled. Some of the options included are support of the 80x87 chip, control over linking .BGI files into the .EXE file, use of the large memory model, generation of debugging code, generation of shadow processing code, and generation of code for "external" graphics devices (the VAXmate and Amiga IFF). See the DEFINES.INC file for details. ..Ken Van Camp